
let {rand,stime} =require ("./fun");
let n=100000
let arr=rand(n)

function cr(arr,n){
   for(let i=1;i<n;i++){
       for(let j=i;j>0&&arr[j]<arr[j-1];j--){
               [arr[j],arr[j-1]]=[arr[j-1],arr[j]]
       }
   }
   console.log(arr.slice(0,10))
}
// stime(cr,arr,n)

//n=100      --16ms
//n=1000     --19ms
//n=10000    --152ms
//n=100000   --14125ms

//增加结束判断 for(let j=i;j>0&&arr[j]<arr[j-1];j--)
//n=100000   --13427ms
//n=10000    --123ms


//改良版出入排序  介绍交换步骤
function cr2(arr,n){
    for(let i=1;i<n;i++){
        let tem=arr[i]
        let j
        for( j=i;j>0&&tem<arr[j-1];j--){
                arr[j]=arr[j-1]
        }
        arr[j]=tem
    }
    console.log(arr.slice(0,10))
 }
 stime(cr2,arr,n)
//n=100      --10ms
//n=1000     --14ms
//n=10000    --54ms
//n=100000   --3296ms